#ifndef _WX_GENERIC_FONTDLGG_H
#define _WX_GENERIC_FONTDLGG_H

#include "wx/defs.h"
#include "wx/gdicmn.h"
#include "wx/font.h"
#include "wx/dialog.h"
#include "wx/cmndata.h"

#define USE_SPINCTRL_FOR_POINT_SIZE 0

class wxChoice;
class wxText;
class wxCheckBox;
class wxFontPreviewer;

enum {
  wxID_FONT_UNDERLINE = 3000,
  wxID_FONT_STYLE,
  wxID_FONT_WEIGHT,
  wxID_FONT_FAMILY,
  wxID_FONT_COLOUR,
  wxID_FONT_SIZE
};

class wxGenericFontDialog : public wxFontDialogBase {
  public:
    wxGenericFontDialog() { Init(); }
    wxGenericFontDialog( wxWindow *parent )
      : wxFontDialogBase( parent ) { Init(); }
    wxGenericFontDialog( wxWindow *parent, const wxFontData& data )
      : wxFontDialogBase( parent, data ) { Init(); }
    virtual ~wxGenericFontDialog();

    virtual int ShowModal();
    wxDEPRECATED( wxGenericFontDialog( wxWindow *parent, const wxFontData *data ) );

    // Internal functions
    void OnCloseWindow( wxCloseEvent& event );

    virtual void CreateWidgets();
    virtual void InitializeFont();

    void OnChangeFont( wxCommandEvent& event );

    #if USE_SPINCTRL_FOR_POINT_SIZE
    void OnChangeSize( wxSpinEvent& event );
    #endif

  protected:

    virtual bool DoCreate( wxWindow *parent );

  private:

    // common part of all ctors
    void Init();

    void DoChangeFont();

    wxFont m_dialogFont;

    wxChoice *m_familyChoice;
    wxChoice *m_styleChoice;
    wxChoice *m_weightChoice;
    wxChoice *m_colourChoice;
    wxCheckBox *m_underLineCheckBox;

    #if !USE_SPINCTRL_FOR_POINT_SIZE
    wxChoice   *m_pointSizeChoice;
    #endif

    wxFontPreviewer *m_previewer;
    bool       m_useEvents;

    //  static bool fontDialogCancelled;
    DECLARE_EVENT_TABLE()
    DECLARE_DYNAMIC_CLASS( wxGenericFontDialog )
};

WXDLLEXPORT const wxChar *wxFontFamilyIntToString( int family );
WXDLLEXPORT const wxChar *wxFontWeightIntToString( int weight );
WXDLLEXPORT const wxChar *wxFontStyleIntToString( int style );
WXDLLEXPORT int wxFontFamilyStringToInt( wxChar *family );
WXDLLEXPORT int wxFontWeightStringToInt( wxChar *weight );
WXDLLEXPORT int wxFontStyleStringToInt( wxChar *style );

// deprecated, for backwards compatibility only
inline wxGenericFontDialog::wxGenericFontDialog( wxWindow *parent, const wxFontData *data )
  : wxFontDialogBase( parent ) { Init(); InitFontData( data ); Create( parent ); }

#endif // _WX_GENERIC_FONTDLGG_H
